雖然多數的 Local LLM 不會像 ChatGPT 一樣高達 175B 的參數量,但即便模型只有 7B, 13B,在只有一兩張 3090, 4090 顯卡的規格下,想要自己從頭開始做預訓練也是非常困難。這時候選擇擁抱開源的語言模型,就是個相當經濟實惠的方案。今天就來簡介一下筆者曾經用過的語言模型。
(Powered By Microsoft Designer)
BLOOM 是 BigScience 開發的模型,於 2022 年 7 月公開,模型參數量包含 560M, 1B, 3B, 7B, 176B 等規格。BigScience 是 Hugging Face 主持的 Workshop,雖然並不是一個特別厲害的模型架構,但是個滿早期就在投入開源的模型之一。
註:M 是百萬的意思,B 則是十億的意思,所以 560M 就是五億六千萬,而 176B 就是一千七百六十億的意思。
預訓練資料包含的種類非常多,可以到這個網頁查看有哪些資料集。根據網頁上所述,這份資料集有將近 1.6 TB 這麼大,總共有 350B 個 Tokens 的文本,包含 46 種自然語言跟 13 種程式語言。並使用 384 張 A100 80GB 做訓練,其 176B 的模型權重約 330 GB 大。
BLOOMZ 則是 BLOOM 的 Instruction Tuning 版,使用 xP3mt 資料集做訓練,這次則是動用了 64 張 A100 80GB 做訓練。
BLOOM 雖然是個投入相當早的模型,但其參數量 7B 太小 176B 又太大,而且模型長度只支援到 2048 個 Tokens,現在來說已經不敷使用,不過開源精神還是值得一個 Respect 👍
Official Website | HF Models | Paper
OPT (Open Pre-trained Transformer) 是 Meta AI 開發的語言模型,於 2022 年 5 月發表,模型參數量從 125M 到 175B 都有。但 175B 需要去填表單跟 Meta 申請才能取得。OPT 經常在大大小小的論文中看見,滿常被拿來做實驗的。但是根據此新聞指出 OPT 團隊似乎已經被 Meta 放棄了 😢
LLaMA 是 2023 年 2 月底同樣由 Meta AI 發表的模型,模型大小包含 7B, 13B, 30B, 65B 等四種規格。使用的資料集全部都是公開資料集,例如網路爬蟲 C4、維基百科、古騰堡計劃 Gutenberg 電子書、arXiv 論文、GitHub 程式碼以及 StackOverflow 家族 StackExchange 系列網站的問答等等,總 Tokens 數約 1.4T 的文本量。有人將這些資料集整理成 RedPajama 資料集,光這個資料集就要用掉好幾個 TB,真不是普通人玩的起的東西 😱
根據 LLaMA 的論文所說,他們拿 2048 張 A100 80GB 訓練 LLaMA 65B 花了 21 天才訓練完。
EXCUSE ME WHAT?! 這些 AI 龍頭公司真是遠遠超乎我的想像 😱
LLaMA 原本是沒有開源的,需要填表申請才能取得,但是被大家偷偷上傳到 Hugging Face Hub 上,加上模型的效果是滿不錯的,因此引起了一波不小的 LLaMA 熱潮,著名的 llama.cpp 專案就是在此時誕生的。那你問我說 LLaMA 的權重被偷偷上傳到哪了呢?這些已經不重要了,因為七月的時候 Llama 2 誕生了。
Llama 2 將訓練資料擴大到 2T Tokens 的文本量,並將原本 2K 的模型長度擴展到了 4K,實用度大幅上升。不同於 LLaMA 只有預訓練模型,Llama 2 還做了指令微調與 RLHF 訓練。最重要的是,Llama 2 正式在 Hugging Face 上開源模型權重啦!無論是預訓練版的 Llama 2 還是 Chat 版的 Llama 2 都可以在 Hugging Face Hub 上找到,真的是\佛心公司/\佛心公司/ 🙏
但是 Llama 2 本身的中文能力其實並不好,因此若要應用在中文情境的話,需要先有一定程度的微調進行中文化才行。
關於 Llama 的大小寫,筆者是略感困擾的。基本上遵循論文標題的寫法,例如一代的論文標題為:
LLaMA: Open and Efficient Foundation Language Models
因此筆者遇到一代的模型,都會用 "LLaMA" 當作名稱代號。而二代的論文標題為:
Llama 2: Open Foundation and Fine-Tuned Chat Models
且官方相關的描述也都是用 "Llama 2" 稱呼,因此遇到二代的模型時,筆者也跟著改成 "Llama 2" 的稱呼。以上給有大小寫強迫症的朋友們參考。
Official Website | GitHub | HF Models | Llama 2 70B Demo | LLaMA Paper | Llama 2 Paper
Alpaca 是 2023 年 3 月由 Stanford 大學公開的一套訓練方法與模型,這個模型是從 LLaMA 模型 Finetune 而來。因為 LLaMA 權重並不公開,所以 Alpaca 官方只提供了 Weight Delta 必須自己手動合併後才能使用。
Alpaca 的特別之處在於他的訓練資料是 GPT-3 生成的,作者首先蒐集了一些種子任務 (Seed Task) 並請 GPT-3 產生更多類似的範例,像是這樣:
然後用這些產生出來的資料拿去對 LLaMA 做指令微調,藉此萃取閉源 GPT 模型的知識,這種做法也被稱為知識蒸餾 (Knowledge Distillation)。原作者是使用 GPT-3 來生成五萬多筆資料,花費不到 600 鎂。但 GPT-3 比 GPT-3.5 貴了十倍,因此如果換成 GPT-3.5 的話可能就是花費不到 60 鎂,且理論上效果還會比 GPT-3 更好。
Blog Post | GitHub | HF Models
Vicuna 是來自 UC Berkeley 柏克萊加州大學與數個學術研究單位聯手合作發表的模型,同樣是從 LLaMA 模型 Finetune 而來。Vicuna 的特色在於他是使用 ShareGPT 資料集進行訓練的。
ShareGPT 其實是一個瀏覽器插件,在 ChatGPT 開放初期,還沒有分享對話的功能,因此可以使用此插件來分享對話內容。一開始 ShareGPT 可以透過爬蟲程式爬取許多對話資料下來,而 Vicuna 的 ShareGPT 訓練資料集就是在那時蒐集來的。但現在 ShareGPT 已經關閉爬蟲入口了,因此如果現在想要使用 ShareGPT 做訓練,可以參考 Hugging Face Hub 上別人整理的 ShareGPT 資料集。
因為 Vicuna 使用的 ShareGPT 訓練集是真實的對話資料,所以相比於使用模型生成的 Alpaca,其訓練資料的多樣性 (Diversity) 高很多。就筆者的實測經驗來看,雖然 ShareGPT 裡面中文的資料比例不算很高,但是中文的問答、摘要與翻譯能力都相當優異。
在 Llama 2 推出後,Vicuna 也跟進推出了 Llama 2 版本的 Vicuna 模型,效果同樣也相當好,可以到他們的 Demo 網頁上試試看:
可以看到雖然只是 7B 的小模型,但是繁體中文的文本生成也是非常自然,雖然有些用語怪怪的,但基本上都還可以接受。
Blog Post | GitHub | Demo | HF Models
MPT (Mosaic Pretrained Transformers) 於 2023 年 5 月由 MosaicML 公開,在 Llama 2 出現之前很受歡迎的開源 LLM 之一。包含 7B 與 30B 兩種參數量規格,模型長度可以到 16K,甚至還有 StoryWriter 版可以往上開到 65K。
會想介紹 MPT 是因為最近 MosaicML 被 Databricks 收購。Databricks 曾經提出 Dolly 資料集與模型,而最近微軟也與 Databricks 合作密切。然後微軟也跟 Meta 合作密切,微軟也投資了數十億美元在 OpenAI 上,好像大半個生成式 AI 都在微軟的魔爪之下欸 🤔
加上微軟收購暴雪喜訊頻傳,看來宇宙微軟帝國即將到來 😈
OpenLLaMA 是因應 LLaMA 沒有開源權重而啟動的專案,作者看起來也是 Berkeley 的學生,目的在於重現 LLaMA 的訓練過程,並且將模型權重開源。除了 7B, 13B 以外,還有更小的 3B 參數量可以使用,是個相當輕量的選擇。
這個專案在五月到七月之間相當活躍,但可能是因為 Llama 2 問世且開源權重的關係,這個專案就沒有繼續更新了。也有可能是作者正在趕稿論文,拚年底前口試畢業。
你以為 RNN 被 Transformers 打趴了嗎,不盡然,在 RWKV 專案裡面,還是可以看見 RNN 的靈壓。RWKV 主打他的模型結合了 RNN 與 Transfomer 的優點,有無限制的模型長度,且對上下文的理解能力也非常好。而且原作者感覺非常活躍,筆者每次打開 README 看起來又多了好幾頁的新內容。筆者認為這是個滿值得關注的架構,有待時間證明這個模型的好壞。
TinyLlama 是個很特別的專案,作者試圖訓練一個 1.1B 大小的 Llama 模型,並使用 3T Tokens 的訓練資料集,預計使用 16 張 A100 40GB 訓練 90 天可以完成。目前是一個正在進行中的專案,但是也提供了相當豐富的資訊。如果你也試圖打算從頭做預訓練,可以參考看看這個專案估算需要花多少時間。
有趣的是作者有公開模型訓練的 Wandb 追蹤(這個連結好像經常會換,請以 GitHub 頁面上為準),我們鮮少有機會看到一個活跳跳的 LLM Loss Curve,有興趣的可以關注看看。
筆者原本是沒有打算介紹 Falcon 模型,因為之前測起來感覺效果不太好,但最新的模型實在太大了!Falcon 最初由阿拉伯聯合大公國的 Technology Innovation Institute 所開發,最近更是釋出了 Falcon 180B 模型,包含 Pretraining 與 Chat 兩種版本。雖然可商用但限制較嚴格,應該是目前千億參數級的開源 LLM 裡面效果最好的一個。
根據 HF Blog Post 所述,即便是 4-Bit Inference 都需要 320 GB 的 GPU 記憶體!是個相當驚人的硬體成本。
根據官方表列的訓練資料,並沒有提到任何中文的訓練資料。但實際使用時,還是能回覆中文,雖然語法結構比較奇怪,也不是每次都能回覆中文。考量到中文資料在訓練資料裡面佔比極低的情況下,有這種成果其實是令筆者相當驚訝的。
Blog Post | Demo | Falcon-180B | Falcon-180B-Chat | Paper
Phi 系列是由 Microsoft 推出的語言模型,其參數量僅 1.1B 而已。最初的 Phi-1 於 2023 年 6 月發表論文,但模型權重當時並沒有開源。一直到最近 2023 年 9 月,發表了 Phi-1.5 的論文後,一口氣將兩個模型一起開源。
這個系列模型主打「教科書就是你所需要的 (Textbooks Are All You Need)」這個口號,這裡所說的教科書是指「請 LLM 生成一份教科書式的說明」。因為作者認為這類的資料包含更多「推理步驟」在裡面,這樣的邏輯資訊比起一般的爬蟲文本,對於 LLM 的訓練是更有幫助的。
Phi-1 Model | Phi-1.5 Model | Phi-1 Paper | Phi-1.5 Paper
這個章節談到的模型多來自於中國的研究單位,因此支援簡體中文比較多。
ChatGLM 由中國清華大學所開發,基於 GLM 架構做訓練,模型規格為 6B 的參數量。這個模型發跡的時間還滿早的,約在 2023 年的 3 月初看到此專案。在當時 Hugging Face Transformers 尚未整合 bitsandbytes 的量化功能,而 ChatGLM 已經支援 4-Bit Quantization 推論了。
ChatGLM 的 Quantization 是使用他們自己的 cpm_kernel
套件進行,然而這個套件並沒有任何文件描述。
最近 ChatGLM 推出第二版,將模型長度進一步擴展到 32K,且可以使用更少的 GPU 記憶體進行更長的推論。
ChatGLM GitHub | ChatGLM2 GitHub | ChatGLM Model | ChatGLM 2 Model
Baichuan 是另外一個中國開發的模型,具有 7B 與 13B 兩種規格。這個模型的 Quantization 就是使用 bitsandbytes 套件進行的,從程式碼看起來還是自己寫 Quantization 的部份,令筆者不明覺厲 ((汗
Baichuan 最近同樣推出了第二代,加入了更多的訓練資料來提昇模型效能。
Baichuan GitHub | Baichuan2 GitHub
Linly 由深圳大學機器視覺研究所所開發,使用了大量的中文與中英雙語文本,對不同的模型進行微調,包含 LLaMA, Llama 2, Falcon 等模型。因此在模型架構上,比起 ChatGLM 與 Baichuan 而言,更容易被整合進現有的應用中。
OpenBuddy 跟 Linly 類似,但是除了中文以外,他們也關心日韓法德等語言。除了一些 General LLM 以外,也有一些 Code LLM 可用,最近看起來則是在訓練 Falcon 180B。可以前往 OpenBuddy 的 Discord 群組試用看看他們的模型。
Official Website | Discord | GitHub | HF Models
做為資源稀缺的繁體中文使用者,有人願意投入臺灣文化的語言模型開發,是很值得鼓勵的事情!以下介紹一些筆者所知的臺灣相關大型語言模型。
Taiwan Llama 是由國立臺灣大學資訊工程學系機器智慧與理解實驗室 (Machine Intelligence & Understanding Laboratory, MiuLab) 訓練的模型,如果你經常在 YouTube 上收看一些深度學習相關的課程影片,可能就會知道這是陳縕儂教授的實驗室。
Taiwan Llama 使用超過 50 億 Tokens 的繁體中文文本對 Llama 2 進行預訓練,並使用超過 49 萬筆對話資料做指令微調。這個模型不單單只是會輸出繁體中文而已,還主打臺灣文化的融入。
預訓練資料的來源是從 mc4 做語言過濾得來的,可惜的是這些資料集的品質受到滿大的挑戰,作者目前以版權疑慮為由暫時下架資料集了。以臺灣為主的開源 LLM 還有許多進步的空間,大家都是為了文化打拼,希望大家也能給這個專案多一點鼓勵。
筆者曾經用 Taiwan Llama 幫忙翻譯了這篇文章,目前連進去的內文應該已經經過人工修飾,但原本的翻譯應該還留著,可以給各位參考看看 Taiwan Llama 的翻譯效果如何。
由華碩子公司台智雲開發的福爾摩沙大型語言模型 (Formosa Foundation Model, FFM) 第一版是以 BLOOM 7B 與 176B 為基礎,加入大量繁體中文語料進行訓練的模型,其中文資料佔總訓練資料的 30% 左右。但 BLOOM 僅有 2K 的模型長度,在進階的應用例如長文本的摘要與翻譯等,這個長度顯然不是很足夠。
但是根據最近的新聞,他們即將引入 Llama 2 與 Code Llama 等模型,屆時可用性將會大大提昇。但這些模型目前看起來應該是不會開源,若為商用需求可能可以考慮看看使用他們的 AFS 服務。
TAIDE 是由臺灣國科會主持的計畫,目標是要發展可信任生成式 AI 對話引擎。根據新聞稿所說,一開始是以 LLaMA 為基礎打造一個 7B 的模型,接下來將會朝向 13B 的規模邁進。目前這個計畫還沒有釋出太多額外的資訊,用途與是否開源等也不太清楚。可能是因為明年要換老闆了,所以且戰且走吧,總而言之還是個值得關注的臺灣大型語言模型。
Awesome LLM 專案整理了這些如天上繁星般多的 LLM 們,其中有張動畫非常有意思:
這個動畫講述了整個語言模型的發展史,我想未來大概會跟 Linux Distro Tree 一樣越長越大而且越來越複雜。
Open LLMs 專案整理了多個可商用的開源模型,如果是要進行商業用途的話,可以參考看看此專案。
Open LLM Leaderboard 是放在 Hugging Face Space 上的一個應用,裡面收錄了許多 Hugging Face Hub 上的模型進行評估的結果,並整理而成的天梯榜。雖然可以參考這個排行榜來選用模型,但這個排行榜進行的評估,未必能反映實際情境的效果,最好還是以實際應用為主,進行測試評估會比較恰當。
把 Awesome LLM 打開就知道,筆者所介紹的這些模型完全只是冰山一角。不管是現在還是未來,都還有很多很多的語言模型會被開發出來。
註:其他還有 Pythia, StableLM, BELLE, Panda 等模型,這些都是筆者曾與有一面之緣,但最後沒有選擇放在這篇文章裡面做介紹的模型,各位也不妨參考看看。
以上都是介紹 General LLM,以一般用途為主的模型。接下來將會來介紹專門寫程式的語言模型,以及他們的用法,我們明天見啦!